<?php

declare (strict_types=1);
namespace App\ContactMessageBatchSend\Model;

use Hyperf\Database\Model\Concerns\CamelCase;
use Base\Model\AbstractModel;
/**
 * @property int $id
 * @property int $user_id 用户ID【mc_user.id】
 * @property string $user_name 用户名称【mc_user.name】
 * @property string $employee_ids 员工ids
 * @property string $filter_params 筛选客户参数
 * @property string $filter_params_detail 筛选客户参数显示详情
 * @property string $content 群发消息内容
 * @property int $send_way 发送方式（1-立即发送，2-定时发送）
 * @property string $definite_time 定时发送时间
 * @property string $send_time 发送时间
 * @property int $send_employee_total 发送成员数量
 * @property int $send_contact_total 发送客户数量
 * @property int $send_total 已发送数量
 * @property int $not_send_total 未发送数量
 * @property int $received_total 已送达数量
 * @property int $not_received_total 未送达数量
 * @property int $receive_limit_total 客户接收已达上限
 * @property int $not_friend_total 因不是好友发送失败
 * @property int $send_status 状态（0-未发送，1-已发送）
 * @property int $corp_id 企业Id
 * @property string $tenant_id 租户ID
 * @property int $create_user 创建人
 * @property int $create_dept 创建部门
 * @property string $create_time 创建时间
 * @property int $update_user 修改人
 * @property string $update_time 修改时间
 * @property int $status 状态
 * @property int $is_deleted 是否已删除
 */
class ContactMessageBatchSend extends AbstractModel
{
    use CamelCase;
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'qxm_contact_message_batch_send';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [];
    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = ['id' => 'integer', 'user_id' => 'integer', 'send_way' => 'integer', 'send_employee_total' => 'integer', 'send_contact_total' => 'integer', 'send_total' => 'integer', 'not_send_total' => 'integer', 'received_total' => 'integer', 'not_received_total' => 'integer', 'receive_limit_total' => 'integer', 'not_friend_total' => 'integer', 'send_status' => 'integer', 'corp_id' => 'integer', 'create_user' => 'integer', 'create_dept' => 'integer', 'update_user' => 'integer', 'status' => 'integer', 'is_deleted' => 'integer'];

    public function getFilterParamsAttribute($value)
    {
        $value = json_decode($value, true);
        return ! empty($value) ? $value : [];
    }

    public function setFilterParamsAttribute($value)
    {
        $this->attributes['filter_params'] = is_string($value) ? $value : json_encode($value, JSON_UNESCAPED_UNICODE);
    }

    public function getFilterParamsDetailAttribute($value)
    {
        $value = json_decode($value, true);
        return ! empty($value) ? $value : [];
    }

    public function setFilterParamsDetailAttribute($value)
    {
        $this->attributes['filter_params_detail'] = is_string($value) ? $value : json_encode($value, JSON_UNESCAPED_UNICODE);
    }

    public function getContentAttribute($value)
    {
        return empty($value) ? [] : json_decode($value, true);
    }

    public function setContentAttribute($value)
    {
        $this->attributes['content'] = is_string($value) ? $value : json_encode($value, JSON_UNESCAPED_UNICODE);
    }

    public function getEmployeeIdsAttribute($value)
    {
        return empty($value) ? [] : json_decode($value, true);
    }

    public function setEmployeeIdsAttribute($value)
    {
        $this->attributes['employee_ids'] = is_string($value) ? $value : json_encode($value, JSON_UNESCAPED_UNICODE);
    }
}